<?php

namespace App\Http\Controllers\Admin;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use DB;

// 设置时区
date_default_timezone_set('PRC');

class GoodsController extends Controller
{
    
    public function getAdd()
    {
        // 获取分类信息
        $data = DB::table('cate') -> get();

        foreach ($data as $k => $v) {
            $data[$k] -> attr_name = DB::table('attr') -> where('cate_id', $data[$k] -> id) -> get();
            // dd($data);
            foreach($data[$k] -> attr_name as $key => $v)
            {
                $data[$k] -> attr_name[$key] -> name = '|--- '.$data[$k] -> attr_name[$key] -> name;
            }
        }



        // dd($data);
        // 获取店铺信息
        $shopAll = DB::table('shop') -> select() -> get();

        foreach($shopAll as $k => $v)
        {
            // 获取店主姓名
            $user = DB::table('user') -> select('name') -> where('id', $v -> user_id) -> first();
            // 拼接字符串
            $shopAll[$k] -> name = $v -> name.'---'.$v -> status."星店铺, 店主 : ".$user -> name;
        }
        // 跳转到商品添加页面
        return view('admin.goods.add', ['data' => $data, 'shopAll' => $shopAll]);
    }

    // ajaxcate
    public function postAjaxcate(Request $request)
    {
        // var_dump($id);
        $cate_id = $request -> input('id');
        $data = DB::table('attr') -> select('name', 'id') -> where('cate_id', $cate_id) -> get();
        // dd($data);
        if($data)
        {
            // dd($data);
            return response() -> json($data);
        }else
        {
            return response() -> json(0);
        }
    }

    public function postInsert(Request $request)
    {
        $data = $request -> except('_token', 'cate_id');
        // dd($data);

        // 判断文件是否上传
        if ($request->hasFile('img')) {

            // 验证上传文件是否有效
            if ($request->file('img')->isValid()) {

                // 设置商品添加时间
                $data['time'] = time();
    

                // 获取文件后缀格式名
                $suffix = $request -> file('img') -> getClientOriginalExtension();

                // 随机一个文件名称
                $fileName = md5(time().mt_rand(100000, 999999)).".".$suffix;

                // 将文件保存到本地
                $request->file('img')->move('./uploads', $fileName);

                // 将图片路径放入数组中
                $data['img'] = $fileName;

                
                // 将数据保存到数据库
                $res = DB::table('goods') -> insert($data);
                // 判断结果集
                if($res)
                {
                    return redirect('/admin/goods') -> with(['info' => '商品添加成功']);
                }else
                {
                    return back() -> with(['info' => '商品添加失败']);
                }
            }
        }else
        {
            return back() -> with(['info' => '没有添加商品图片!']);
        }
    }


    public function getIndex(Request $request)
    {
        $data = DB::table('goods')
             -> select('goods.*', 'attr.name AS attr_name', 'cate.name AS cate_name', 'cate.id AS cate_id')
             -> Join('attr', 'goods.attr_id', '=', 'attr.id')
             -> join('cate', 'attr.cate_id', '=', 'cate.id')
             -> where('goods.title', 'like', '%'.$request -> input('keyword').'%')
             -> paginate($request -> input('num', 10));
             
        // dd($data);

         foreach ($data as $k => $v) {
            // 查看店铺
            $shop = DB::table('shop') -> where('id', $data[$k] -> shop_id) -> first();
            // 店主
            $data[$k] -> shop_user = DB::table('user') -> where('id', $shop -> user_id) -> first() -> name;
            // 店名
            $data[$k] -> shop_name = $shop -> name;
            // 店铺级别
            $data[$k] -> shop_status = $shop -> status.'星店铺';

            // 商品名
            // $title = $data[$k] -> title;
            // $data[$k] -> title=substr($title,0,5).'...';
            // dd($data[$k]);
         }


       // $ddd = substr("手机端快捷航航空就相爱后立刻发货了", 1,10);
       // dd($ddd);

        return view('admin.goods.index', ['data' => $data, 'request' => $request -> all()]);
    }

    // ajaxName
    public function postAjaxname(Request $request)
    {
        // dd($request -> id, $request -> name);
        // return '33333';
        $res = DB::table('goods') -> where('title', $request -> input('name')) -> first();
        if($res)
        {
            // 9, 表示用户名已经存在
            return response() -> json(9);
        }else
        {
            $r = DB::table('goods') -> where('id', $request -> id) -> update(['title' => $request -> name]);
            if($r)
            {
                return response() -> json(0);
            }else
            {
                return response() -> json(1);
            }
        }
    }


    // 商品详情 details
    public function getDetails($id)
    {
        $data = DB::table('goods') 
            -> select('goods.*', 'attr.name AS attr_name', 'cate.name AS cate_name')
            -> join('attr', 'goods.attr_id', '=', 'attr.id')
            -> join('cate', 'attr.cate_id', '=', 'cate.id')
            -> where('goods.id', $id) -> first();

        // dd($data);

        $data -> time = date('Y-m-d H:i:s',$data -> time);

        // 查看店铺
        $shop = DB::table('shop') -> where('id', $data-> shop_id) -> first();
        // 店主
        $data -> shop_user = "店主:".DB::table('user') -> where('id', $shop -> user_id) -> first() -> name;
        // 店名
        $data -> shop_name = "店名:".$shop -> name;
        // 店铺级别
        $data -> shop_status = "店铺级别:".$shop -> status.'星店铺';

        $data -> shop_img = $shop -> img;
        
        // dd($data);


        return view('admin.goods.details', ['data' => $data]);
    }

    public function getEdit($id)
    {
        $cate = DB::table('cate') -> get();
            // -> select('cate.*', 'attr.name as attr_name')
            // -> join('attr', 'cate.id', '=', 'attr.cate_id')
            // -> get();
        // dd($data); 
        foreach ($cate as $k => $v) {
            $cate[$k] -> attr_name = DB::table('attr') -> where('cate_id', $cate[$k] -> id) -> get();
            foreach($cate[$k] -> attr_name as $key => $v)
            {
                $cate[$k] -> attr_name[$key] -> name = '|--- '.$cate[$k] -> attr_name[$key] -> name;
            }
        }
        // dd($cate);
        $shop = DB::table('shop') -> get();
        foreach ($shop as $k => $v) {
            $shop[$k] -> user_name = DB::table('user') -> where('id', $shop[$k] -> user_id) -> first() -> name;
        }
        // dd($shop);
        $data = DB::table('goods') 
            -> select('goods.*', 'attr.cate_id AS cate_id')
            -> join('attr', 'goods.attr_id', '=', 'attr.id')
            -> where('goods.id', $id) -> first();
        // dd($data);
        

        return view('admin.goods.edit', ['data' => $data, 'cate' => $cate, 'shop' => $shop]);
    }
    
    public function postUpdate(Request $request)
    {
        $data = $request -> except('_token', 'oldImg');
         // 判断文件是否上传
        if ($request->hasFile('img')) {

            // 验证上传文件是否有效
            if ($request->file('img')->isValid()) {

                // 删除老图片
                $oldImg = "./uploads/".$request -> all()['oldImg'];
                if(file_exists($oldImg))
                {
                    unlink($oldImg);
                }

                // 获取文件后缀格式名
                $suffix = $request -> file('img') -> getClientOriginalExtension();

                // 随机一个文件名称
                $fileName = md5(time().mt_rand(100000, 999999)).".".$suffix;

                // 将文件保存到本地
                $request->file('img')->move('./uploads', $fileName);

                // 将图片路径放入数组中
                $data['img'] = $fileName;

                // 将数据保存到数据库
                $res = DB::table('goods') -> where('id', $data['id']) -> update($data);
                // 判断结果集
                if($res)
                {
                    return redirect('/admin/goods/index') -> with(['info' => '商品修改成功']);
                }else
                {
                    return back() -> with(['info' => '商品修改失败']);
                }
            }
        }else
        {
            // 修改老图片的键名
            $data['img'] = $request -> all()['oldImg'];

            // 将数据从数据库中修改
            $res = DB::table('goods') -> where('id', $data['id']) -> update($data);
            // 判断结果集
            if($res)
            {
                return redirect('/admin/goods/index') -> with(['info' => '商品修改成功']);
            }else
            {
                return back() -> with(['info' => '商品修改失败']);
            }
        }

    }


    // 删除商品
    public function getDelete($id)
    {   
            // 获取图片
            $img = DB::table('goods') -> where('id', $id) -> first() -> img; 
                // dd($img);
            $oldImg = './uploads/'.$img;

            // 将数据从数据库中删除
            $res = DB::table('goods') -> delete($id);

            // 判断结果集
            if($res)
            {   
                // 从磁盘删除图片

                if(file_exists($oldImg))
                {
                    unlink($oldImg);
                }

                return redirect('/admin/goods/index') -> with(['info' => '商品删除成功']);
            }else
            {
                return back() -> with(['info' => '商品删除失败']);
            }
    }
}
